package com.leetone.testng;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

/**
 * @ProjectName: testng
 * @Package: com.leetone.testng
 * @ClassName: BasePage
 * @Description: 【处理页面元素公共类，重写页面操作事件，为每个元素加入显式等待】
 * @Author: 谭磊
 * @Email: leetone123@163.com
 * @CreateDate: 2018/11/4 13:45
 * @UpdateUser: 更新者：
 * @UpdateDate: 2018/11/4 13:45
 * @UpdateRemark: 更新说明：根据以往经验，UI自动化测试很容易出现找到不对象的情况，所以在操作之前必须判断对象是否存在，java和python一样有隐式等待和显式等待，我选择使用更加稳妥的显式等待。Java显式等待使用的是WebDriverWait+ExpectedConditions
 * @Version: 1.0
 */
public class BasePage {
    WebDriver driver;
    private final int timeOut = 10;//等待时间

    public BasePage(WebDriver driver){
        this.driver = driver;
    }

    /**
     * 重写sendkey方法
     */
    void sendkeys(WebElement element,String s){
        new WebDriverWait(driver,timeOut).until(ExpectedConditions.visibilityOf(element));//加入显式等待
        element.clear();//先清空输入框
        element.sendKeys(s);//输入数据
    }

    /**
     * 重写click方法
     */
    void click(WebElement element){
        new WebDriverWait(driver,timeOut).until(ExpectedConditions.visibilityOf(element));
        element.click();
    }
}